#ifndef PITA_INTERFACES_IQUEUE_H_
#define PITA_INTERFACES_IQUEUE_H_

#include <boost/shared_ptr.hpp>
#include <boost/signals.hpp>

#include "exceptions.h"
#include "source_descriptor.h"

namespace pita {

	struct QueueInterface
	{
			virtual unsigned int size() const = 0;
			
			virtual SourceDescriptor sourceDescriptor(Index) const = 0;
			
			virtual void insert(const SourceDescriptor&, Index) = 0;
			
			virtual void erase(Index) = 0;
			
			/* issued after a source has been inserted. Index is index of 
			   new source */
			boost::signal<void(Index)> insertSignal;
			
			/* issued after a source is removed. Index is index of the 
			   removed source */
			boost::signal<void(Index)> eraseSignal;
	};

}

#endif
